package com.bookmall.cart.domain.vo;

import com.bookmall.cart.domain.CartItem;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * @Description:
 * @Author 胡菜鸡
 * @Create 2022-04-21-17:02
 */
@Data
public class OrderInfoVo {
    /** 用户收获地址列表 */
    private List<MemberAddressVo> address;

    /** 所有选中的购物项 */
    private List<CartItem> items;

    /** 优惠信息 */
    private Long integration = 0L;    //用户积分
    private BigDecimal coupon = new BigDecimal("0.0");     //优惠券

    /** 运费 */
    private BigDecimal expressPrice = new BigDecimal("0.0");

    /** 订单防止重复令牌 */
    private String orderToken;

    /**
     * 订单总价
     * @author 胡菜鸡
     * @date 2022/4/22 9:08
     */
    public BigDecimal getTotal(){
        BigDecimal total = new BigDecimal("0");
        if(items != null){
            for (CartItem item : this.items) {
                BigDecimal price = item.getPrice().multiply(new BigDecimal(item.getCount()));
                total = total.add(price);
            }
        }
        return total;
    }

    /**
     * 优惠总额
     * @author 胡菜鸡
     * @date 2022/4/22 9:09
     */
    public BigDecimal getPayPrice(){
        //商品总价
        BigDecimal total = getTotal();
        //积分抵扣
        BigDecimal reduce = new BigDecimal(this.integration / 1000.0);
        // 最终价格=总价+快递费-积分抵扣-优惠券
        BigDecimal fiPrice = total.add(this.expressPrice).subtract(reduce).subtract(this.coupon);

        //商品最终价格若小于0，则返回0
        return fiPrice.compareTo(new BigDecimal("0")) < 0 ? new BigDecimal("0") : fiPrice;
    }
}
